﻿/*------------------  Kendo 控件方法 ------------------*/

/**
 * @kendo Window 刷新事件
 * @在 refresh 内容载入完成后触发
 */
function refreshWindowEvent() {
    var window = $("#window").data("kendoWindow");
    window.center();
}

/*
* @ 打开 窗口
* @ param {string} title : 窗口标题
* @ param {string} url : 窗口内容载入地址 (非 iframe)
* @ param {object} param : 键值对形式的参数
*/
function openWindow(title, url, param) {
    var window = $("#window").data("kendoWindow");
    window.title(title);
    window.refresh({ url: url, data: param });
    window.center().open();
}

/*
* @ 关闭 窗口
*/
function closeWindow() {
    var window = $("#window").data("kendoWindow");
    window.close();
}

/*
* @ 打开 Notification 通知
* @ param {string} message : 通知内容
* @ param {string} style : 通知的样式, 
                           这个样式是自带的, 也可以自定义模板
                           选值有:
                            "success"
                            "error"
                            "info"
*/
function openNotification(message, style) {
    var _notify = $("#notification").data("kendoNotification");
    _notify.show(message, style);
}

/* 载入动画的层. */
var _loadingBody = $("html");

/*
* @ 打开 载入动画
*/
function openLoading() {
    kendo.ui.progress(_loadingBody, true);
}

/*
* @ 打开 载入动画
* @ param {int} timer : 在多少毫秒后关闭载入动画
*/
function openLoadingAuto(timer) {
    kendo.ui.progress(_loadingBody, true);
    setTimeout(function () {
        kendo.ui.progress(_loadingBody, false);
    }, timer);
}

/*
* @ 关闭 载入动画
*/
function closeLoading() {
    kendo.ui.progress(_loadingBody, false);
}

/*
* 重写 kendo.confirm 方法
* 相比原 confirm 取消了 title, 也可以自定义 title
* 写在 app.js 下似乎无效 所以暂定写在这里
* @@param {string} newMessage 内容
*/
(function (kendo) {
    var myConfirm = $('#kendoConfirm');
    kendo.confirm = function (newMessage, newTitle) {
        var str = "<div style='padding:10px; min-width:200px; font-size:large;'>" + newMessage + "</div>";
        return new Promise(function (resolve, reject) {
            console.log(myConfirm);
            myConfirm.kendoDialog({
                title: newTitle,
                closable: true,
                modal: true,
                visible: false,
                actions: [{
                    text: '确定',
                    primary: true,
                    action: resolve
                }, {
                    text: '取消',
                }]
            });
            myConfirm.data("kendoDialog").content(str);
            myConfirm.data("kendoDialog").open();
        });
    }
})(kendo);




/*------------------  事件统一处理 ------------------*/
/*
* @ ajax 通信错误
* @ param {object} XMLHttpRequest : 错误对象
*/
function ajaxError(XMLHttpRequest, textStatus, errorThrown) {
    alert("ajaxError 详情见调试信息");
    console.log(XMLHttpRequest);
    console.log(textStatus);
    console.log(errorThrown);
}

/*
* @ Kendo dataSource 控件绑定数据错误事件
* @ param {object} e : 错误对象
*/
function dataSourceError(e) {
    if (e.errors) {
        var message = "Errors:\n";
        $.each(e.errors, function (key, value) {
            if ('errors' in value) {
                $.each(value.errors, function () {
                    message += this + "\n";
                });
            }
        });
        openNotification(message, "error");
    }
}